String.prototype.startsWith = function(str) {return (this.match("^"+str)==str)}

function init_objectives($tree, prefix, needWysiwyg)
{
	var opts = {'lang':'en','height':200,'toolbar':'normal','styleWithCss':false,'allowSource':false};
	var wysiwyg_options = {
	    controls: {
	    	bold          : { visible : true },
	    	italic        : { visible : true },
			underline     : { visible : true },
	      
			separator00 : { visible : true },
	      
			justifyLeft   : { visible : true },
			justifyCenter : { visible : true },
			justifyRight  : { visible : true },
			justifyFull   : { visible : true },
			  
			separator01 : { visible : true },
			  
			indent  : { visible : false },
			outdent : { visible : false },
			  
			separator02 : { visible : false },
			  
			subscript   : { visible : false },
			superscript : { visible : false },
			  
			separator03 : { visible : false },
			  
			undo : { visible : true },
			redo : { visible : true },
			  
			separator04 : { visible : true },
			  
			insertOrderedList    : { visible : true },
			insertUnorderedList  : { visible : true },
			insertHorizontalRule : { visible : false },
			  
			h1mozilla : { visible : false && $.browser.mozilla, className : 'h1', command : 'heading', arguments : ['h1'], tags : ['h1'], tooltip : "Header 1" },
			h2mozilla : { visible : false && $.browser.mozilla, className : 'h2', command : 'heading', arguments : ['h2'], tags : ['h2'], tooltip : "Header 2" },
			h3mozilla : { visible : false && $.browser.mozilla, className : 'h3', command : 'heading', arguments : ['h3'], tags : ['h3'], tooltip : "Header 3" },
			h4mozilla : { visible : false && $.browser.mozilla, className : 'h4', command : 'heading', arguments : ['h4'], tags : ['h4'], tooltip : "Header 4" },
			h5mozilla : { visible : false && $.browser.mozilla, className : 'h5', command : 'heading', arguments : ['h5'], tags : ['h5'], tooltip : "Header 5" },
			h6mozilla : { visible : false && $.browser.mozilla, className : 'h6', command : 'heading', arguments : ['h6'], tags : ['h6'], tooltip : "Header 6" },
			  
			h1 : { visible : false && !( $.browser.mozilla ), className : 'h1', command : 'formatBlock', arguments : ['<H1>'], tags : ['h1'], tooltip : "Header 1" },
			h2 : { visible : false && !( $.browser.mozilla ), className : 'h2', command : 'formatBlock', arguments : ['<H2>'], tags : ['h2'], tooltip : "Header 2" },
			h3 : { visible : false && !( $.browser.mozilla ), className : 'h3', command : 'formatBlock', arguments : ['<H3>'], tags : ['h3'], tooltip : "Header 3" },
			h4 : { visible : false && !( $.browser.mozilla ), className : 'h4', command : 'formatBlock', arguments : ['<H4>'], tags : ['h4'], tooltip : "Header 4" },
			h5 : { visible : false && !( $.browser.mozilla ), className : 'h5', command : 'formatBlock', arguments : ['<H5>'], tags : ['h5'], tooltip : "Header 5" },
			h6 : { visible : false && !( $.browser.mozilla ), className : 'h6', command : 'formatBlock', arguments : ['<H6>'], tags : ['h6'], tooltip : "Header 6" },
			  
			separator07 : { visible : true},
			  
			cut   : { visible : true },
			copy  : { visible : true },
			paste : { visible : true },
			createLink: {visible : false },
			insertImage: {visible : false },
			separator06: {visible : false },
			strikeThrough : { visible : false },
			removeFormat : { visible : false },
	    }
	};
	if (prefix == null || prefix == undefined)
		prefix = '';
	if (needWysiwyg == null || needWysiwyg == undefined)
		needWysiwyg = true;
	$tree.find('li.node').each(
		function(index)
		{
			var $this = $(this);
			var node_id = eval("this.id.replace (/^"+prefix+"node_/, '')");
			var $children = $this.children('ul').children('li.node');
			var $layer = $('#'+prefix+'objective_layer_'+node_id);
			var $topic = $('#'+prefix+'objective_topic_'+node_id);
			var $objective = $('#'+prefix+'objective_'+node_id);
			var $image = $('#'+prefix+'img_comment_'+node_id);
			$image.hide();
			
			$this.bind('checked', function(event){
				if(!$(this).children("a").hasClass("undetermined"))
				{
					$image.show();
					if (!$layer.is(':visible'))
					{
						$image.click();
					}
					$topic.val("");
					$children.trigger('setObjectiveParent', [ node_id ]);
					$objective.val(1);
				}else{
					if ($layer.is(':visible'))
					{
						$image.click();
					}
					$image.hide();
				}
			}).bind('unchecked', function(event){
				if ($layer.is(':visible'))
				{
					$image.click();
				}
				$image.hide();
				$topic.val("");
				$children.trigger('setObjectiveParent', [ "" ]);
				$objective.val(0);
			}).bind('setObjectiveParent', function (event, id){
				$topic.val(id);
			});
			$layer.each(function(index){
				var $img = $image;
				$img.toggle(function(event){
					$layer.hide();
					if (needWysiwyg){
						$layer.children(".wysiwyg").remove();
					}
					this.src = 'images/arrow_down_blue.png';
				}, function(event){
					$layer.show();
					if (needWysiwyg){
						// ('#NewProjectForm_description').elrte(opts);
						// .wysiwyg(wysiwyg_options)
						$("#"+prefix+"objective_needs_"+node_id).show().removeClass("editor_text").addClass("editor_text").wysiwyg(wysiwyg_options);
						$("#"+prefix+"objective_contacts_"+node_id).show().removeClass("editor_text").addClass("editor_text").wysiwyg(wysiwyg_options);
						$("#"+prefix+"objective_needs_"+node_id+" .wysiwyg a").unbind("dblclick.jstree").unbind("click.jstree");
						$("#"+prefix+"objective_contacts_"+node_id+" .wysiwyg a").unbind("dblclick.jstree").unbind("click.jstree");
					}
					this.src = 'images/arrow_up_blue.png';
				}).click();
			});
			if ($objective.val() == "1")
			{
				jQuery.tree.plugins.checkbox.check($objective[0]);
				$image.click();
			}
		}
	);
}

